why is javascript so confusing